package com.mzj.saas.commons;

import com.alibaba.fastjson.JSON;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

//用于进行Https请求的HttpClient  
public class SSLClient extends DefaultHttpClient{  
    public SSLClient() throws Exception{  
        super();  
        SSLContext ctx = SSLContext.getInstance("TLS");  
        X509TrustManager tm = new X509TrustManager() {  
                @Override  
                public void checkClientTrusted(X509Certificate[] chain,  
                        String authType) throws CertificateException {  
                }  
                @Override  
                public void checkServerTrusted(X509Certificate[] chain,  
                        String authType) throws CertificateException {  
                }  
                @Override  
                public X509Certificate[] getAcceptedIssuers() {  
                    return null;  
                }  
        };  
        ctx.init(null, new TrustManager[]{tm}, null);  
        SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
        ClientConnectionManager ccm = this.getConnectionManager();  
        SchemeRegistry sr = ccm.getSchemeRegistry();  
        sr.register(new Scheme("https", 443, ssf));  
    }
    
    
    
	/**
	 * @Description : httpGet请求 
	 * @author JYQ
	 * @date 2017年10月31日 下午8:17:15 
	 * @param authorizerNotify
	 * @param plantAccount
	 * @return String
	 */
	public String httpGetRequest(String url) throws Exception{
		String result = "";
		HttpClient httpClient = null;  
        HttpGet httpGet = null;    
         httpClient = new SSLClient();  
         httpGet = new HttpGet(url); 
         httpGet.setHeader("Content-Type", "text/html;charset=UTF-8"); // 防止乱码
         HttpResponse respon = httpClient.execute(httpGet);  
         if(respon != null){  
               HttpEntity resEntity = respon.getEntity();  
                if(resEntity != null){  
                    result = EntityUtils.toString(resEntity,"UTF-8");  
               }  
           }  
        return result;
	}
	
	
    /**
	 * @Description : httpPost请求 
	 * @author JYQ
	 * @date 2017年10月31日 下午8:17:15 
	 * @param authorizerNotify
	 * @param plantAccount
	 * @return String
	 */
	public String httpPostRequest(String url,Object params) {
		String result = "";
		HttpClient httpClient = null;  
        HttpPost httpPost = null;  
        try{  
            httpClient = new SSLClient();  
            httpPost = new HttpPost(url);  
            //设置参数  
            String json = JSON.toJSONString(params);
            StringEntity entity = new StringEntity(json,"utf-8");//解决中文乱码问题    
            entity.setContentEncoding("UTF-8");    
            entity.setContentType("application/json");    
            httpPost.setEntity(entity);
            HttpResponse respon = httpClient.execute(httpPost);  
            if(respon != null){  
                HttpEntity resEntity = respon.getEntity();  
                if(resEntity != null){  
                    result = EntityUtils.toString(resEntity,"UTF-8");  
                }  
            }  
        }catch(Exception ex){  
//            LOG.error(ex.getMessage(),ex);
        }  
        return result;
	}
}  